package com.ak.demo;

import com.ak.demo.linster.HelloJob2;
import com.ak.demo.linster.MyJobListener;
import com.ak.demo.myjob.HelloJob;
import org.quartz.*;
import org.quartz.impl.StdSchedulerFactory;
import org.quartz.impl.matchers.EverythingMatcher;
import org.quartz.impl.matchers.KeyMatcher;
import org.w3c.dom.events.EventListener;

public class MyTestLinster {
    public static void main(String[] args) throws SchedulerException {

        //创建一个scheduler
        Scheduler scheduler = StdSchedulerFactory.getDefaultScheduler();

        //创建一个job,和Helloword 完成绑定
        JobDetail job = JobBuilder.newJob(HelloJob2.class)
                // 放入job 业务中的数据
                 // 参数一： 任务的实例（唯一），任务组的名称
                .withIdentity("myjob1", "mygroup")
                .build();

        JobDetail job2 = JobBuilder.newJob(HelloJob2.class)
                // 放入job 业务中的数据
                // 参数一： 任务的实例（唯一），任务组的名称
                .withIdentity("myjob2", "mygroup2")
                .build();

        //创建一个Trigger
        Trigger trigger = TriggerBuilder.newTrigger()
                // 触发器的名称 ，参数二：触发器的 组
                .withIdentity("trigger1", "group1")
                // 设置
                .withSchedule(
                        SimpleScheduleBuilder
                        .simpleSchedule()
                                // 3秒钟重复 执行一次
                        .withIntervalInSeconds(3)
                                // 一直重复下去
                        .repeatForever())
                .build();

        Trigger trigger2 = TriggerBuilder.newTrigger()
                // 触发器的名称 ，参数二：触发器的 组
                .withIdentity("trigger2", "group1")
                // 设置
                .withSchedule(
                        SimpleScheduleBuilder
                                .simpleSchedule()
                                // 3秒钟重复 执行一次
                                .withIntervalInSeconds(3)
                                // 一直重复下去
                                .repeatForever())
                .build();


        //注册trigger并启动scheduler
        // 一个job能够绑定很多 trigger ,
        // 一个trigger 只能绑定一个 job
        scheduler.scheduleJob(job,trigger);
        scheduler.scheduleJob(job2,trigger2);

        // 创建全局的linster
       // scheduler.getListenerManager().addJobListener(new MyJobListener(), EverythingMatcher.allJobs());

        // 创建局部的Linster
        scheduler.getListenerManager().addJobListener(new MyJobListener(), KeyMatcher.keyEquals(JobKey.jobKey("myjob1", "mygroup")));
        // 触发器开始执行
        scheduler.start();
    }
}
